কীভাবে প্রোগ্রামিয়ালি অ্যান্ড্রয়েড মার্শমেলোতে কোনও নির্দিষ্ট অ্যাপের জন্য অনুমতি স্ক্রিনটি খুলবেন?


330

নতুন অ্যান্ড্রয়েড মার্শমেলো প্রকাশ সম্পর্কে আমার একটি প্রশ্ন রয়েছে:

কোনও নির্দিষ্ট অ্যাপ্লিকেশনের জন্য কোনও ইন্টেন্ট বা এর অনুরূপ কোনও কিছুর মাধ্যমে অনুমতি স্ক্রিনটি প্রদর্শন করা সহজ?

অ্যান্ড্রয়েড এম পারমিশন স্ক্রিন

নিম্নলিখিত কোড সহ অ্যাপের সেটিংস প্রদর্শন করা সম্ভব - সরাসরি অনুমতি স্ক্রিনটি খোলার জন্য কোনও অ্যানালগ সমাধান রয়েছে?

startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", getPackageName(), null)));

আমি ইতিমধ্যে এটি নিয়ে কিছু গবেষণা করেছি তবে আমি সঠিক সমাধান খুঁজে পাচ্ছিলাম না - আমি প্রতিটি সাহায্যের প্রশংসা করব!


এটি চেষ্টা করুন এটি স্ট্যাকওভারফ্লো.com
বিপিন ভারতী

উত্তর:


443

অফিসিয়াল মার্শমেলো অনুমতি ভিডিও অনুসারে ( 4 মি। 43 এর চিহ্নে ) আপনার পরিবর্তে অ্যাপ্লিকেশন সেটিংস পৃষ্ঠাটি খুলতে হবে (সেখান থেকে অনুমতি পৃষ্ঠাতে এটিতে ক্লিক করা হবে)।

সেটিংস পৃষ্ঠাটি খুলতে, আপনি তা করবেন

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);

12
এটি অ্যাপ্লিকেশন স্ক্রিনের সাধারণ বিবরণে পুনর্নির্দেশ করছে। কীভাবে বিশেষত অ্যাপ অনুমতিগুলির স্ক্রিনে যেতে পারে। আমি বাকি একটি ক্লিকও চাই না,
মিলিণ্ড মেভাদা

5
@ মিলিন্দমাদেদা - আপনি এই মুহূর্তে এটি করতে পারবেন না।
মার্টিন কনেকেনি

আপনি কি "রিয়েলটাইম" ইনটেন্ট ব্যবহার করে আপনার কার্যকলাপে সেটিংস ক্রিয়াকলাপ থেকে ডেটা প্রেরণ করতে পারেন? সমস্যাগুলির মুখোমুখি হওয়া বিষয়গুলি সেটিংস থেকে প্রেরণ করা হয়ে গেলে আপনার ক্রিয়াকলাপে এই ডেটাটি পরিচালনা করছে ।
থান্ডারওয়্যারিং

অ্যাপটি ডিবাগ করার সময় এটি কাজ করে, তবে APK তে স্বাক্ষর করার পরে কোনও আসল কারণ ছাড়াই ক্রাশ হয় hes লগকটে কোনও কিছুই স্পষ্ট নয়।
JCutting8

181

সপ্তাহের দিন. আমিও তাই করার চেষ্টা করেছি। আমি প্যাকেজটির নাম এবং ক্রিয়াকলাপটি শুরু করতে পারি। তবে শেষ পর্যন্ত আপনি সুরক্ষা ব্যতিক্রম পাবেন কারণ অনুপস্থিত অনুমতিের কারণে আপনি ঘোষণা করতে পারবেন না।

হালনাগাদ:

অন্যান্য উত্তর সম্পর্কে আমি অ্যাপ্লিকেশন সেটিংস স্ক্রিনটি খোলার পরামর্শ দিই। আমি নিম্নলিখিত কোড সহ এটি করি:

    public static void startInstalledAppDetailsActivity(final Activity context) {
    if (context == null) {
        return;
    }
    final Intent i = new Intent();
    i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    i.addCategory(Intent.CATEGORY_DEFAULT);
    i.setData(Uri.parse("package:" + context.getPackageName()));
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    context.startActivity(i);
}

যেহেতু আমার ইতিহাসের স্ট্যাকে এটি থাকতে চাই না তাই আমি এটি উদ্দেশ্য পতাকাগুলি ব্যবহার করে সরিয়ে ফেলি।


আমিও একই অভিজ্ঞতা পেয়েছি এবং ভেবেছিলাম এর কার্যকারিতা / অন্য সমাধান হতে পারে ...: - /
ফ্রেডেরিক শোয়েগার

না, দুর্ভাগ্যক্রমে এটি নকশা দ্বারা সম্ভব নয়। আরও তথ্যের জন্য Google+ এ এই আলোচনাটি দেখুন: goo.gl/Wqjjff
ফ্রেডেরিক

1
@ মালগার্ড হোয়াটসঅ্যাপ অবশ্যই টার্গেটএসডিকে = "23" ব্যবহার করা উচিত। এটি অ্যাপ্লিকেশনটিকে অনুমতিটি সক্ষম করতে ব্যবহারকারীকে প্রম্পট করার অনুমতি দেয়। যদি আপনার টার্গেট এসডিকে <23, ব্যবহারকারীকে অ্যাপের অনুমতিগুলির স্ক্রিনটি দেখাতে সক্ষম হয় তবে এটি মনে হয় কেবলমাত্র আমরা সাধারণ অ্যাপ্লিকেশন সেটিংসের স্ক্রিনটিই প্রদর্শন করতে পারি।
ভিমান

4
ইনটেন্ট.এফএলএজি_এসিটিভিটি_নো_হস্তি কখনও কখনও ট্যাবলেটগুলিতে সমস্যাযুক্ত পরিস্থিতি তৈরি করতে পারে যখন সেটিংস স্ক্রিনের মধ্যে একটি পপ-আপ প্রদর্শিত হয় এটি সেটিংসের স্ক্রীনটি বন্ধ করে দেবে। কেবলমাত্র পতাকাটি সরানোই এই সমস্যার সমাধান করবে।
ঘোরাঘুরি

2
আপনি একই সাথে একটি টোস্ট প্রদর্শন করতে পারেন ব্যবহারকারীকে "অনুমতি" এ যাওয়ার জন্য নির্দেশ দিচ্ছেন (আপনার অ্যাপ্লিকেশনটির বাকী ব্যবহারকারীর ভাষায় উপলব্ধ না থাকলেও এই বার্তাটি স্থানীয়করণ করার ভাল ধারণা)
ger

81
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);

বিবরণ অ্যাপের জন্য বিশদ সেটিং পৃষ্ঠা খুলবে। এখান থেকে ব্যবহারকারীকে ম্যানুয়ালি পছন্দসই অনুমতি দিতে হবে।

Settings.ACTION_APPLICATION_DETAILS_SETTINGS
  

Intent.FLAG_ACTIVITY_NEW_TASK
   .চ্ছিক । যদি সেট করা থাকে তবে সেটিংস স্ক্রিন (ক্রিয়াকলাপ )টিকে নতুন ক্রিয়াকলাপ হিসাবে খুলবে। অন্যথায় এটি বর্তমানে চলমান ক্রিয়াকলাপে খোলা হবে।

Uri.fromParts("package", getPackageName(), null)
   ইউআরআই প্রস্তুত বা তৈরি করে, যদিও, getPackageName () - আপনার অ্যাপ্লিকেশন প্যাকেজের নাম দেয়।

intent.setData(uri)
   এই সেট করতে ভুলবেন না । অন্যথায়, আপনি পাবেন android.content.ActivityNotFoundExceptionকারণ আপনি নিজের উদ্দেশ্যটি অ্যান্ড্রয়েড হিসাবে সেট করেছেন Settings.ACTION_APPLICATION_DETAILS_SETTINGS এবং অ্যান্ড্রয়েড কিছু নাম অনুসন্ধান করার প্রত্যাশা করে।


এটিই আক্ষরিক অর্থে শীর্ষ ভোটের উত্তর। কেন এটি সদৃশ এবং মূল উত্তরটি প্রসারিত করবেন না ?!
টমাস কেলার

1
গভীরতার ব্যাখ্যার জন্য আপনাকে ধন্যবাদ।
ডেভিড রেফোয়া

34

পরিবর্তে, আপনি এক লাইন দিয়ে নির্দিষ্ট অ্যাপের সাধারণ সেটিংস খুলতে পারেন

 startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + BuildConfig.APPLICATION_ID)));

আপনার বিল্ডটি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে প্যাকেজের নাম পেতে আপনি getActivity ()। GetPackageName () ব্যবহার করতে চাইতে পারেন।
কোরি রায়

15

প্রোগ্রামের মাধ্যমে অনুমতি পর্দা খোলানো সম্ভব নয়। পরিবর্তে, আমরা অ্যাপ্লিকেশন সেটিংস স্ক্রিনটি খুলতে পারি।

কোড

Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + BuildConfig.APPLICATION_ID));
startActivity(i);

নমুনা আউটপুট

এখানে চিত্র বর্ণনা লিখুন


1
তিনি অনুমতি পৃষ্ঠাটির জন্য জিজ্ঞাসা করছেন
মাভে ツ

10

আপনি যদি কম কোড লিখতে চান তবে আপনি এটি Kotlinকরতে পারেন:

fun Context.openAppSystemSettings() {
    startActivity(Intent().apply {
        action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
        data = Uri.fromParts("package", packageName, null)
    })
}

মার্টিন কনেকেনি উত্তরের ভিত্তিতে


কোটিন এক্সটেনশনের দুর্দান্ত ব্যবহার
ডেভিড জারভিস

7

কোটলিন স্টাইল

    startActivity(Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
        data = Uri.fromParts("package", packageName, null)
    })

5

হয়তো এই আপনাকে সাহায্য করবে

private void openSettings() {
    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    Uri uri = Uri.fromParts("package", getPackageName(), null);
    intent.setData(uri);
    startActivityForResult(intent, 101);
}

3

যদি আমরা কেবল ফ্লাইএমই ওএস ( মেইজু ) সম্পর্কে কথা বলি তবে অনুমতিগুলির সাথে এটির নিজস্ব সুরক্ষা অ্যাপ্লিকেশন রয়েছে।

এটি খোলার জন্য নিম্নলিখিত উদ্দেশ্যগুলি ব্যবহার করুন:

public static void openFlymeSecurityApp(Activity context) {
    Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
    try {
        context.startActivity(intent);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

অফ কারণ BuildConfig আপনার অ্যাপ্লিকেশনের হয় BuildConfig


3

জামারিন ফর্ম অ্যান্ড্রয়েড:

//---------------------------------------------------------
public void OpenSettings()
//---------------------------------------------------------
{
    var intent = new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings,
        Android.Net.Uri.Parse("package:" + Forms.Context.PackageName));
    Forms.Context.StartActivity(intent);
}

0

ব্যবহারিকভাবে অনুমতি পাওয়া সম্ভব নয় ... তবে অসুবিধেতে আপনাকে সেই কোডের লাইনটি {} ক্যাচ {try করার চেষ্টা করুন যা দুর্ভাগ্যক্রমে আপনার অ্যাপটিকে থামিয়ে দেয় ... এবং ক্যাচ বডিটিতে একটি ডায়ালগ বক্স তৈরি করে যা নেভিগেট করবে অন্যান্য অ্যাপ্লিকেশানের অনুমতি আঁকতে সক্ষম করতে ব্যবহারকারী থেকে ছোট টিউটোরিয়াল ... তারপরে হ্যাঁ বোতামে এই কোডটি রাখুন ...

 Intent callSettingIntent= new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
            startActivity(callSettingIntent);

এই অভিপ্রায় হয় সরাসরি অন্যান্য অ্যাপ্লিকেশানের জায়গায় বসান এর তালিকা খুলতে অনুমতি পরিচালনা এবং তারপর এখান থেকে এটি অন্যান্য অ্যাপ্লিকেশান অনুমতিসমূহ জায়গায় বসান এক ক্লিকেই হচ্ছে ... আমি জানি এই উত্তরটি আপনি যা খুঁজছেন না ... কিন্তু আমি আমার অ্যাপ্লিকেশনগুলিতে এটি করছি ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.