অ্যান্ড্রয়েড মার্শমেলোতে কোনও পরিষেবা থেকে অনুমতিগুলির জন্য কীভাবে অনুরোধ করবেন


101

অ্যান্ড্রয়েড মার্শমেলোতে, কোনও অ্যাপ্লিকেশন ইনস্টল করা অবস্থায় একবারে একবারের পরিবর্তে যখন প্রয়োজন হয় তখন রানটাইমের অনুমতিগুলির অনুরোধ করা উচিত। তবে আমি কেবলমাত্র কোনও ক্রিয়াকলাপের অনুমতি চেয়েছি বলে মনে হয়, যা আমার অ্যাপ্লিকেশনটিতে কেবল পরিষেবা রয়েছে সেহেতু এটি একটি সমস্যা। (এটি কেন, আপনি জিজ্ঞাসা করতে পারেন? অ্যাপটিতে একটি Android Wear ঘড়ির মুখটি ভিতরে বান্ডিল রয়েছে এবং সমস্ত ফোনে ঘড়িতে পাঠানোর জন্য কাছাকাছি ছবিগুলি সন্ধান করা হয় - কোনও ক্রিয়াকলাপের প্রয়োজন হয় না But তবে এর জন্য অবস্থানের অনুমতি প্রয়োজন হয় না))

সুতরাং, কোনও পরিষেবা থেকে অনুমতি চাওয়ার কোনও উপায় আছে কি? বা অতীতের মতো কোনওভাবে ইনস্টল করার সময় অনুমতিগুলি মঞ্জুর করতে বাধ্য করবেন?


এই সমস্যাটি অ্যাপ্লিকেশন শ্রেণির
ভিতরেও রয়েছে

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

আমার পাঠাগারটি কোনও প্রসঙ্গে সহজেই রানটাইম অনুমতিগুলি হ্যান্ডেল করতে এবং "আবার জিজ্ঞাসা করবেন না" পরিচালনাও করে। github.com
নবীন ভান্ডারী

উত্তর:


47

requestPermission()কেবলমাত্র একটি থেকে Activityনয় এবং একটি থেকে কল করা যেতে পারে Service( checkPermission()এটির বিপরীতে কেবল প্রয়োজন হয় না PackageManager)। সুতরাং এটি কাছাকাছি পেতে আপনাকে কিছু অতিরিক্ত কাজ করতে হবে; আপনাকে Activityআপনার অ্যাপ্লিকেশনটিতে একটি সরবরাহ করতে হবে এবং উদাহরণস্বরূপ, Serviceএটির প্রয়োজনীয় অনুমতিগুলির জন্য আপনি যাচাই করতে পারেন এবং যদি তাদের এখনও অনুমোদন দেওয়া হয়নি তবে এটি একটি বিজ্ঞপ্তি তৈরি করতে পারে এবং এটি ব্যবহারকারীকে কেন বর্ণনামূলক সংক্ষিপ্ত বার্তা দিয়ে অবহিত করতে পারে একটি বিজ্ঞপ্তি এবং যখন তারা বিজ্ঞপ্তি ইত্যাদিতে ক্লিক করেন তখন কী ঘটতে হবে


এই সমাধানটি বেনজমিন পোয়েস প্রস্তাব করেছিলেন। আপনি এই পোডকাস্টটি 23:40
শায়োমী

আপনি খণ্ডের ভিতরে অনুরোধপরিমিতি () কেও কল করতে পারেন।
মিশাগ ইমামভারদী

3
স্থায়ীভাবে আপডেটের জন্য চলমান ব্যাকগ্রাউন্ড পরিষেবা পরীক্ষা করার ক্ষেত্রে সমাধান কী এবং আমি সেটিংসে অবস্থানের অনুমতিটি বন্ধ করে দিই। যেহেতু কোন কার্যকলাপ, এই বিপর্যস্ত যখন আমি অ্যাপ পুনরায় খুলুন আমার সেবা ঘটায়
stud91

1
@ stud91 খুব কমপক্ষে, প্রতিবার আপনি অবস্থান আপডেটের জন্য অনুরোধ করলে সুরক্ষা ব্যতিক্রম বা ক্যোয়ারী অনুমতিগুলি ধরুন। এটি আপনার অ্যাপ্লিকেশনটিকে ক্রাশ হওয়া থেকে বিরত করবে (যদিও অনুমতিটি বাতিল হয়ে গেলে আপনি কোনও অবস্থান পাবেন না)। আরও ভাল: অনুমতি পরীক্ষা করুন, এবং এটি অনুপস্থিত থাকলে, একটি বিজ্ঞপ্তি প্রদর্শন করুন যা ব্যবহারকারীকে এমন ক্রিয়াকলাপে নিয়ে যায় যা অনুমতি ডায়ালগের জন্য কেবল স্থানধারক।
ব্যবহারকারী 149408

8
: এখানে কিভাবে আমি এটা মীমাংসিত এর github.com/mvglasow/satstat/blob/master/src/com/vonglasow/... এটা কোনো থেকে বলা যেতে পারে Contextযা কার্যকরী OnRequestPermissionsResultCallback। কার্যকারিতার মান অনুরূপ requestPermission()
ব্যবহারকারী 149408

15

আমি সম্মত, পরিষেবার জন্য এটি খুব ঝামেলাজনক, আমি মনে করি এর জন্য আপনার অ্যান্ড্রয়েড বিকাশকারী পূর্বরূপ পৃষ্ঠায় কোনও সমস্যা প্রতিবেদন করা উচিত।

এই মুহুর্তে, আমি মনে করি যে পরিষেবাটিতে অনুমতি পরীক্ষা করার জন্য সর্বোত্তম সমাধান হ'ল অনুমতিটি অনুপস্থিত থাকলে বিজ্ঞপ্তি প্রদর্শন করা। আরও ভাল, ব্যবহারকারীরা বিজ্ঞপ্তিতে চাপলে অনুমতিের জন্য অনুরোধ করার জন্য একটি ডায়ালগএকটিভিটি তৈরি করুন।


7

PermissionE Everybody লাইব্রেরিতে একবার দেখুন । এটি আপনাকে যে কোনও প্রসঙ্গে অনুমতি চাইতে পারে।

এটি ক্লিক করে একটি বিজ্ঞপ্তি তৈরি করে যার উপর এটি অনুমতি চাওয়ার জন্য একটি ক্রিয়াকলাপ খোলে।

গ্রন্থাগারের গিথব পৃষ্ঠা থেকে নমুনা কোড: -

@Override
  protected Boolean doInBackground(Void... params) {
      PermissionResponse response = PermissionEverywhere.getPermission(getApplicationContext(), 
      new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
              REQ_CODE,
              "Notification title", 
              "This app needs  a write permission", 
              R.mipmap.ic_launcher)
              .call();
      //waits..
      boolean isGranted = response.isGranted();

      if(isGranted){ //changed from isGrante to isGranted
      // Do stuff
      }
  }

1
আমি একটি পরিষেবাদীতে অ্যাসিঙ্ক সংস্করণ চেষ্টা করেছি এবং এটি কার্যকর হয়নি। অন ​​কমপ্লিটকে কখনই ডাকা হয় না
লিও ড্রয়েডকোডার

ভাল ধারণা, তবে এটি সংগ্রহস্থলগুলিতে পাওয়া যায় না
naXa

2
এই প্যাকেজটি আমার পক্ষে কাজ করেছে, পরামর্শের জন্য ধন্যবাদ। আমি খেয়াল করব, যদিও আমি অ্যাসিঙ্ক সংস্করণটি চেষ্টা করি নি। এছাড়াও, যাদের ব্যবহার PermissionEverywhereকরতে সমস্যা হচ্ছে তাদের জন্য, আপনার ম্যানিফেস্টে সাহায্যকারী ক্রিয়াকলাপটি ঘোষণা করেছেন তা নিশ্চিত করে নিন এবং নিশ্চিত করুন যে আপনি এটি ঘোষণা করার সময় এটি সঠিক প্যাকেজের সাথে আবদ্ধ (আপনি যদি PermissionEverywhereপৃথক প্যাকেজ হিসাবে ব্যবহার করছেন )। আমাকে বুঝতে দীর্ঘ সময় লেগেছিল যে আমি প্রকৃতপক্ষে PermissionEverywhereম্যানিফেস্টে প্যাকেজটি নির্দিষ্ট করছি না ।
ব্যবহারকারী 3570982

আমি PermissionEverywhereডেমো অ্যাপ্লিকেশন চালিয়েছিলাম এবং এটি কার্যকর হয়নি।
আইএক্সএক্স

2

একটি খুব সাধারণ লাইব্রেরি রয়েছে যা সঠিকভাবে এটি করার অনুমতি দেয়। অ্যাপটি অগ্রভাগ বা ব্যাকগ্রাউন্ডে রয়েছে কিনা তার উপর ভিত্তি করে আপনি যে কোনও জায়গা থেকে (এমনকি কোনও পরিষেবা থেকেও) অনুমতিগুলি পরীক্ষা করতে পারেন, এটি হয় সাধারণ ডায়ালগ দেখায় বা অনুমতি চেয়ে একটি বিজ্ঞপ্তি উত্পন্ন করে। কোডটি বোঝা সত্যিই সহজ এবং এটি ব্যবহার করা সত্যই সহজ।

এটি ব্যবহার করে দেখুন: অ্যান্ড্রয়েড অনুমতি


-2

আপনি ResultReceiverব্যবহারকারীদের উত্তরগুলির একটি রিসিভার তৈরি করতে ব্যবহার করতে পারেন , তারপরে এটিকে ক্রিয়াকলাপে কলব্যাক হিসাবে নোটিফিকেশনের মাধ্যমে প্রেরণ করুন PendingIntentউল্লেখ

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